Fixups for the glibc build. Install the kernel headers into sys-include in glibc...
authorChris Larson <clarson@kergoth.com>
Fri, 19 Dec 2003 22:31:24 +0000 (22:31 +0000)
committerChris Larson <clarson@kergoth.com>
Fri, 19 Dec 2003 22:31:24 +0000 (22:31 +0000)
's package pool.

BKrev: 3fe37c3cgArHHqFEDVnEZyqfCf4ovQ

30 files changed:
glibc/glibc-2.3.2/10_cvs.patch
glibc/glibc-2.3.2/11_shlib-lds.patch [new file with mode: 0644]
glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch [new file with mode: 0644]
glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch [new file with mode: 0644]
glibc/glibc-2.3.2/90_glibc232-statvfs.patch [new file with mode: 0644]
glibc/glibc-2.3.2/90_glibc232-timezones.patch [new file with mode: 0644]
glibc/glibc-2.3.2/arm-ioperm.patch [new file with mode: 0644]
glibc/glibc-2.3.2/arm-no-hwcap.patch
glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc-i686-timing.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc-make-check-perms.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-01-hppa-dl-machine.patch
glibc/glibc-2.3.2/glibc23-cmov.patch
glibc/glibc-2.3.2/glibc23-errno-hack.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-errno.patch
glibc/glibc-2.3.2/glibc23-libio-compat.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-mips-msq.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-sparc-pread64.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibc23-version-sanity.patch [new file with mode: 0644]
glibc/glibc-2.3.2/glibcbug.patch
glibc/glibc-2.3.2/hppa-syscall.patch [new file with mode: 0644]
glibc/glibc-2.3.2/ldconfig.patch
glibc/glibc-2.3.2/ldso-disable-hwcap.patch [new file with mode: 0644]
glibc/glibc-2.3.2/makeconfig.patch
glibc/glibc-2.3.2/nptl-pthread-once.patch [new file with mode: 0644]
glibc/glibc-2.3.2/pthread-cleanup.patch [new file with mode: 0644]
glibc/glibc-initial_2.3.2.oe
glibc/glibc_2.3.2.oe

index e69de29..5a84b37 100644 (file)
+--- 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$.
++# Generated from $Id$.
+ 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)
\f
+ # 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
\f
+ # 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>.
\f
++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.
++\f
+ 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);
+ }
\f
+-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);
\f
+ /* 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);
\f
+ /* 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 '\1f'
++  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$.
++   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
++
+ /*
\f */
+--- 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$.
++# From $Id$.
+ # 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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 { | } ~ \7f \80 \81 \82 \83 \84 \85 
+-\86 \87 \88 \89 \8a \8b \8c \8d \8e \8f \90 \91 \92 \93 \94 \95 \96 
+-\97 \98 \99 \9a \9b \9c \9d \9e \9f   ¡ ¢ £ ¤ ¥ ¦ § 
+-¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ 
+-¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É 
+-ʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ
+-Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë 
+-ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü 
+-ý þ ÿ 
+--- 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$    
++#     $Id$    
+ 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$
+- * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+- * Fixups for glibc, use a newer patchset from debian unstable.
+- *
+- * (Logical change 1.471)
+- *
+- * Revision 1.1  1992/10/06 18:29:52  roland
+- * entered into RCS
+- *
++ * $Log$
++ * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
++ * Fixups for glibc, use a newer patchset from debian unstable.
++ *
++ * (Logical change 1.471)
++ *
+  * 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$
+- * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+- * Fixups for glibc, use a newer patchset from debian unstable.
+- *
+- * (Logical change 1.471)
+- *
+- * Revision 1.1  1992/10/06 18:29:52  roland
+- * entered into RCS
+- *
++ * $Log$
++ * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
++ * Fixups for glibc, use a newer patchset from debian unstable.
++ *
++ * (Logical change 1.471)
++ *
+  * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+- * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+- * Fixups for glibc, use a newer patchset from debian unstable.
+- *
+- * (Logical change 1.471)
+- *
+- * Revision 1.1  1992/10/06 18:29:52  roland
+- * entered into RCS
+- *
++ * $Log$
++ * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
++ * Fixups for glibc, use a newer patchset from debian unstable.
++ *
++ * (Logical change 1.471)
++ *
+  * 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$
+- * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+- * Fixups for glibc, use a newer patchset from debian unstable.
+- *
+- * (Logical change 1.471)
+- *
+- * Revision 1.1  1992/10/06 18:29:53  roland
+- * entered into RCS
+- *
++ * $Log$
++ * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
++ * Fixups for glibc, use a newer patchset from debian unstable.
++ *
++ * (Logical change 1.471)
++ *
+  * 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$
+- * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+- * Fixups for glibc, use a newer patchset from debian unstable.
+- *
+- * (Logical change 1.471)
+- *
+- * Revision 1.2  1993/11/23 21:14:05  mib
+- * entered into RCS
+- *
++ * $Log$
++ * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
++ * Fixups for glibc, use a newer patchset from debian unstable.
++ *
++ * (Logical change 1.471)
++ *
+  * 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$
+       Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+       Fixups for glibc, use a newer patchset from debian unstable.
+
+       (Logical change 1.471)
+
+-      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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
++  $Id$
+   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$
++  $Id$
+   `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$
++/* $Id$
+    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
+ }
\f
+@@ -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)
++\f
++/* 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;
++}
++\f
++/* 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)
++\f
++
++
++
++/* 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)
++\f
++/* 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;
++}
++\f
++/* 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;
++}
++\f
++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)
++\f
++/* 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.\vIf 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.\vIf 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\r
++echo Configuring glob for GO32\r
++rem This batch file assumes a unix-type "sed" program\r
++\r
++echo # Makefile generated by "configure.bat"> Makefile\r
++\r
++if exist config.sed del config.sed\r
++\r
++echo "s/@srcdir@/./                                   ">> config.sed\r
++echo "s/@CC@/gcc/                                     ">> config.sed\r
++echo "s/@CFLAGS@/-O2 -g/                              ">> config.sed\r
++echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../              ">> config.sed\r
++echo "s/@AR@/ar/                                      ">> config.sed\r
++echo "s/@RANLIB@/ranlib/                              ">> config.sed\r
++echo "s/@LDFLAGS@//                                   ">> config.sed\r
++echo "s/@DEFS@//                                      ">> config.sed\r
++echo "s/@ALLOCA@//                                    ">> config.sed\r
++echo "s/@LIBS@//                                      ">> config.sed\r
++echo "s/@LIBOBJS@//                                   ">> config.sed\r
++echo "s/^Makefile *:/_Makefile:/                      ">> config.sed\r
++echo "s/^config.h *:/_config.h:/                      ">> config.sed\r
++\r
++sed -e "s/^\"//" -e "s/\"$//" -e "s/[         ]*$//" config.sed > config2.sed\r
++sed -f config2.sed Makefile.in >> Makefile\r
++del config.sed\r
++del config2.sed\r
+--- 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$";
++static char rcsid[] = "$Id$";
+ #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$
++# $Id$
+ 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
+ };
\f
+--- 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$";
++  "$Id$";
+ /*
+  * 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$";
++"$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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$";
++  "$Id$";
+ /*
+  * 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 @@
+     }
+ }
\f
++/* 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
\f
+-#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 @@
\f
+ 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$
+  * Revision 1.3  2003-12-19 22:31:24  ti.com!kergoth
+  * Fixups for glibc, use a newer patchset from debian unstable.
+  *
+  * (Logical change 1.471)
+  *
+- * 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$
++ * Version: $Id$
+  */
+ #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/glibc/glibc-2.3.2/11_shlib-lds.patch b/glibc/glibc-2.3.2/11_shlib-lds.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch b/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch b/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/90_glibc232-statvfs.patch b/glibc/glibc-2.3.2/90_glibc232-statvfs.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/90_glibc232-timezones.patch b/glibc/glibc-2.3.2/90_glibc232-timezones.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/arm-ioperm.patch b/glibc/glibc-2.3.2/arm-ioperm.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..17bfdcd 100644 (file)
@@ -0,0 +1,11 @@
+--- 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/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch b/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc-i686-timing.patch b/glibc/glibc-2.3.2/glibc-i686-timing.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc-make-check-perms.patch b/glibc/glibc-2.3.2/glibc-make-check-perms.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..f5f02d1 100644 (file)
@@ -0,0 +1,305 @@
+--- 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),
index e69de29..73b20dd 100644 (file)
@@ -0,0 +1,36 @@
+--- 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/glibc/glibc-2.3.2/glibc23-errno-hack.patch b/glibc/glibc-2.3.2/glibc23-errno-hack.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..616560f 100644 (file)
@@ -0,0 +1,36 @@
+--- 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/glibc/glibc-2.3.2/glibc23-libio-compat.patch b/glibc/glibc-2.3.2/glibc23-libio-compat.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc23-mips-msq.patch b/glibc/glibc-2.3.2/glibc23-mips-msq.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch b/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch b/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch b/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/glibc23-version-sanity.patch b/glibc/glibc-2.3.2/glibc23-version-sanity.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..6005b79 100644 (file)
@@ -0,0 +1,22 @@
+--- 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/glibc/glibc-2.3.2/hppa-syscall.patch b/glibc/glibc-2.3.2/hppa-syscall.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..c60b9b1 100644 (file)
@@ -0,0 +1,37 @@
+--- 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/glibc/glibc-2.3.2/ldso-disable-hwcap.patch b/glibc/glibc-2.3.2/ldso-disable-hwcap.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..4365878 100644 (file)
@@ -0,0 +1,15 @@
+--- 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/glibc/glibc-2.3.2/nptl-pthread-once.patch b/glibc/glibc-2.3.2/nptl-pthread-once.patch
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/glibc/glibc-2.3.2/pthread-cleanup.patch b/glibc/glibc-2.3.2/pthread-cleanup.patch
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..24283e8 100644 (file)
@@ -0,0 +1,48 @@
+include glibc_${PV}.oe
+
+DEPENDS =
+PROVIDES = virtual/glibc-headers
+FILESDIR = ${@os.path.dirname(oe.data.getVar('FILE',d,1))}/glibc-${PV}
+S = ${WORKDIR}/glibc-${PV}
+
+PACKAGES =
+
+do_configure () {
+       sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
+       CC="${BUILD_CC}" CPP="${BUILD_CPP}" LD="${BUILD_LD}" ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
+               --without-cvs --disable-sanity-checks --with-headers=${WORKDIR}/linux/include \
+               --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=${CROSS_DIR}/${TARGET_SYS} prefix="" install-headers
+
+       # 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 ${CROSS_DIR}/${TARGET_SYS}/include/gnu
+       touch ${CROSS_DIR}/${TARGET_SYS}/include/gnu/stubs.h
+       cp ${S}/include/features.h ${CROSS_DIR}/${TARGET_SYS}/include/features.h
+
+       install -d ${CROSS_DIR}/${TARGET_SYS}/sys-include
+       cp -a '${WORKDIR}/linux/include/linux' '${CROSS_DIR}/${TARGET_SYS}/sys-include/'
+       cp -R -L '${WORKDIR}/linux/include/asm' '${CROSS_DIR}/${TARGET_SYS}/sys-include/'
+}
+
+do_install () {
+       :
+}
index 0bfae75..b2d3837 100644 (file)
@@ -5,63 +5,67 @@ PRIORITY=required
 MAINTAINER="Chris Larson <kergoth@handhelds.org>"
 PROVIDES=virtual/libc
 
-SRC_URI= ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz \
-        ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz \
-        http://www.uclibc.org/downloads/toolchain/kernel-headers-2.4.21.tar.bz2 \
-        file://${FILESDIR}/noinfo.patch;patch=1 \
-        file://${FILESDIR}/10_cvs.patch;patch=1 \
-        file://${FILESDIR}/30_glibc232-base.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/50_glibc232-arm-dwarf2-buildfix.patch;patch=1 \
-        file://${FILESDIR}/50_glibc232-m68k-dwarf2-buildfix.patch;patch=1 \
-        file://${FILESDIR}/50_glibc232-mips-buildfix.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/50_glibc23-hppa-entry.patch;patch=1 \
-        file://${FILESDIR}/80_glibc232-futimes-buildfix.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/80_glibc232-iconvdata-fix.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/80_glibc232-locales-header.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/80_glibc232-wcsmbs-fix.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/81_glibc232-utimes-fix.patch;patch=1 \
-        file://${FILESDIR}/alpha-crti.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/alpha-pic.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/alpha-pwrite.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/arm-no-hwcap.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/arm-output-format.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/fhs-linux-paths.patch;patch=1 \
-        file://${FILESDIR}/glibc22-eo_EO.patch;patch=1 \
-        file://${FILESDIR}/glibc22-locales.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/glibc22-m68k-compat.patch;patch=1 \
-        file://${FILESDIR}/glibc22-m68k-fpic.patch;patch=1 \
-        file://${FILESDIR}/glibc22-nss-upgrade.patch;patch=1 \
-        file://${FILESDIR}/glibc22-ttyname-devfs.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/glibc23-01-hppa-dl-machine.patch;patch=1 \
-        file://${FILESDIR}/glibc23-07-hppa-atomicity.patch;patch=1 \
-        file://${FILESDIR}/glibc23-asserth-decls.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/glibc23-cmov.patch;patch=1 \
-        file://${FILESDIR}/glibc23-ctype-compat.patch;patch=1 \
-        file://${FILESDIR}/glibc23-errno.patch;patch=1 \
-        file://${FILESDIR}/glibc23-function-compat.patch;patch=1 \
-        file://${FILESDIR}/glibc23-hppa-compat.patch;patch=1 \
-        file://${FILESDIR}/glibc23-hppa-malloc8.patch;patch=1 \
-        file://${FILESDIR}/glibc23-hppa-Rminkernel.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/glibcbug.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/hurd-enable-ldconfig.patch;patch=1 \
-        file://${FILESDIR}/ldconfig.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/ldd.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/libgcc-compat-all.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/libgcc-compat-other.patch;patch=1 \
-        file://${FILESDIR}/librt-mips.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/locale-es_AR.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/locales-stuff.patch;patch=1 \
-        file://${FILESDIR}/locales-supported.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/lo_LA.UTF-8_not_supported.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/makeconfig.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/nss_compat-shadow.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/powerpc-sysconf.patch;patch=1 \
-        file://${FILESDIR}/revert-old-libio.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/s390-tls.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/sparc64-fixups.patch;patch=1 \
-        file://${FILESDIR}/sparcv8-target.patch;patch=1;pnum=0 \
-        file://${FILESDIR}/syslog-backrev.patch;patch=1;pnum=0
 #       file://${FILESDIR}/dyn-ldconfig.diff;patch=1;pnum=0
+#        file://${FILESDIR}/glibcbug.patch;patch=1;pnum=0
+#        file://${FILESDIR}/nptl-pthread-once.patch;patch=1;pnum=1
+#        file://${FILESDIR}/50_glibc232-hppa-full-nptl-2003-10-22.patch;patch=1;pnum=1
+#        file://${FILESDIR}/alpha-crti.patch;patch=1;pnum=1
+#        file://${FILESDIR}/glibc-make-check-perms.patch;patch=1;pnum=0
+SRC_URI = ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz \
+         ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz \
+         http://www.uclibc.org/downloads/toolchain/kernel-headers-2.4.21.tar.bz2 \
+         file://${FILESDIR}/noinfo.patch;patch=1 \
+         file://${FILESDIR}/10_cvs.patch;patch=1 \
+         file://${FILESDIR}/glibc-i686-timing.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/makeconfig.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/locale-es_AR.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/ldconfig.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/ldd.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/fhs-linux-paths.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-nss-upgrade.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-eo_EO.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-m68k-compat.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-m68k-fpic.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-locales.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/sparc64-fixups.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc22-ttyname-devfs.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/powerpc-sysconf.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/arm-no-hwcap.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/locales-stuff.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/librt-mips.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc23-ctype-compat.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-hppa-Rminkernel.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc23-function-compat.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-errno.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-asserth-decls.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/alpha-pic.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc23-cmov.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/libgcc-compat-all.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/locales-supported.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/libgcc-compat-other.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/s390-tls.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/hurd-enable-ldconfig.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/30_glibc232-base.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/sparcv8-target.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/50_glibc232-arm-dwarf2-buildfix.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/50_glibc232-m68k-dwarf2-buildfix.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/arm-output-format.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/arm-ioperm.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/pthread-cleanup.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc-2.3.2-ldconfig-tls.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-mips-msq.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc23-libio-compat.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/80_glibc232-locales-nb_NO-fix.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/ldso-disable-hwcap.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/11_shlib-lds.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-version-sanity.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-sse-oldkernel.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-sparc-pread64.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/glibc23-powerpc-sigcontext.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/hppa-syscall.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/glibc23-errno-hack.patch;patch=1;pnum=1 \
+         file://${FILESDIR}/90_glibc232-statvfs.patch;patch=1;pnum=0 \
+         file://${FILESDIR}/90_glibc232-timezones.patch;patch=1;pnum=0
 
 S="${WORKDIR}/${P}"
 B="${WORKDIR}/build-${TARGET_SYS}"
@@ -72,12 +76,10 @@ sbindir=/sbin
 
 inherit autotools
 
-EXTRA_OECONF='--without-tls --without-__thread \
-             --enable-kernel=2.4.6 --without-cvs \
-             --disable-profile --disable-debug --without-gd \
-             --enable-clocale=gnu \
-             --enable-add-ons=linuxthreads \
-             --with-headers=${WORKDIR}/linux/include'
+EXTRA_OECONF =  --without-tls --without-__thread --enable-kernel=2.4.3 \
+               --without-cvs --disable-profile --disable-debug --without-gd \
+               --enable-clocale=gnu \
+               --enable-add-ons=linuxthreads --with-headers=${WORKDIR}/linux/include
 
 glibcbuild_do_unpack () {
        mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/"
@@ -168,8 +170,9 @@ do_stage() {
                   '${CROSS_DIR}/${TARGET_SYS}/lib/libc.so.6' \
                   install-headers install-lib
 
+       install -d ${CROSS_DIR}/${TARGET_SYS}/sys-include
        cp -a '${WORKDIR}/linux/include/linux' '${CROSS_DIR}/${TARGET_SYS}/sys-include/'
-       cp -R -L '${WORKDIR}/linux/include/asm' '${CROSS_DIR}/${TARGET_SYS}/sys-include/asm'
+       cp -R -L '${WORKDIR}/linux/include/asm' '${CROSS_DIR}/${TARGET_SYS}/sys-include/'
 
        install -d ${CROSS_DIR}/${TARGET_SYS}/include/gnu \
                   ${CROSS_DIR}/${TARGET_SYS}/include/bits \